package com.fancy.learncenter.fragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;

import com.andview.refreshview.XRefreshView;
import com.fancy.learncenter.adapter.ToothWDAdapter;
import com.fancy.learncenter.bean.BaseDataBean;
import com.fancy.learncenter.bean.WDListDataBean;
import com.fancy.learncenter.common.Constant;
import com.fancy.learncenter.common.MyApplication;
import com.fancy.learncenter.net.HttpMehtod;
import com.fancy.learncenter.net.IdeaObserver;
import com.fancy.learncenter.utils.LogUtil;
import com.fancy.learncenter.utils.SPUtils;
import com.fancy.learncenter.utils.ToastUtil;
import com.fancy.learncenter.view.CustomFootView;
import com.fancy.learncenter.view.CustomHeaderView;
import com.fancy.learncenter.view.PromptPopupWindow;
import com.superservice.lya.R;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import butterknife.Bind;
import butterknife.ButterKnife;

public class ToothWDFragment extends Fragment {

    @Bind(R.id.xRefreshView)
    XRefreshView xRefreshView;
    @Bind(R.id.recycleView)
    RecyclerView recycleView;

    ArrayList<WDListDataBean> mData;
    @Bind(R.id.prompt_img)
    ImageView promptImg;
    @Bind(R.id.shaixuan)
    RelativeLayout shaixuan;

    public ToothWDFragment() {
        // Required empty public constructor
    }


    public static ToothWDFragment newInstance(String isMy) {

        Bundle args = new Bundle();
        args.putString("isMy", isMy);
        ToothWDFragment fragment = new ToothWDFragment();
        fragment.setArguments(args);
        return fragment;
    }

    String isMy = "";

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (getArguments() != null) {
            isMy = getArguments().getString("isMy");
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_tooth_list, container, false);
        ButterKnife.bind(this, view);
        initView();
        return view;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        ButterKnife.unbind(this);
    }

    ToothWDAdapter adapter;
    PromptPopupWindow promptPopupWindow;
    String caseId = "";
    int position = 0;

    private void initView() {
        mData = new ArrayList<>();
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recycleView.setLayoutManager(linearLayoutManager);


        if (!TextUtils.isEmpty(isMy) && MyApplication.userId.equals(isMy)) {
            adapter = new ToothWDAdapter(getActivity(), mData, true);
            adapter.setDeleteCallBack(new ToothWDAdapter.DeleteCallBack() {
                @Override
                public void deleteCallBack(int p, String caseIdStr) {
                    position = p;
                    caseId = caseIdStr;
                    if (promptPopupWindow == null) {
                        promptPopupWindow = new PromptPopupWindow(getActivity(), shaixuan);
                        promptPopupWindow.setCallBack(new PromptPopupWindow.CallBack() {
                            @Override
                            public void confirm() {
                                delCase();
                            }

                            @Override
                            public void cancle() {

                            }
                        });
                    }

                    promptPopupWindow.showPopupWindow();

                }
            });
        } else {
            adapter = new ToothWDAdapter(getActivity(), mData);
        }


        recycleView.setAdapter(adapter);

        adapter.setCustomLoadMoreView(new CustomFootView(getActivity()));
        xRefreshView.setPullLoadEnable(true);
        xRefreshView.setCustomHeaderView(new CustomHeaderView(getActivity()));
        xRefreshView.setPinnedTime(1000);
        xRefreshView.setXRefreshViewListener(new XRefreshView.XRefreshViewListener() {
            @Override
            public void onRefresh() {
                LogUtil.MyLog("onLoadMore", "====onRefresh==");
                getDatas(true);
            }

            @Override
            public void onRefresh(boolean isPullDown) {

            }

            @Override
            public void onLoadMore(boolean isSilence) {
                getDatas(false);
                LogUtil.MyLog("onLoadMore", "====onLoadMore==");
            }

            @Override
            public void onRelease(float direction) {

            }

            @Override
            public void onHeaderMove(double headerMovePercent, int offsetY) {

            }
        });

        getDatas(true);

    }

    int page = 0;

    private void getDatas(final boolean isRefresh) {
        Map map = new HashMap();

        if (isRefresh) {
            page = 0;
        } else {
            page++;
        }
        map.put("page", page + "");

        if (!TextUtils.isEmpty(isMy)) {
            map.put("token", SPUtils.getToken());
            map.put("userId", SPUtils.getUserID());
        }
        HttpMehtod.getInstance().trainWDList(map, new IdeaObserver<BaseDataBean<List<WDListDataBean>>>(getActivity(), true) {


            @Override
            public void onSuccess(BaseDataBean<List<WDListDataBean>> listBaseDataBean) {

                if (isRefresh) {

                    if (xRefreshView == null) {
                        return;
                    }
                    xRefreshView.stopRefresh();
                    xRefreshView.setLoadComplete(false);

                    if (listBaseDataBean.getData() == null) {
                        adapter.notifyDataSetChanged(new ArrayList<WDListDataBean>());
                        promptImg.setVisibility(View.VISIBLE);
                        return;
                    } else {
                        promptImg.setVisibility(View.GONE);
                        adapter.notifyDataSetChanged((ArrayList<WDListDataBean>) listBaseDataBean.getData());
                    }


                } else {
                    if (listBaseDataBean.getData() == null) {
                        xRefreshView.setLoadComplete(true);
                    } else if (listBaseDataBean.getData() != null && listBaseDataBean.getData().size() < Constant.PAGE_NUM) {
                        xRefreshView.setLoadComplete(true);
                    } else {
                        xRefreshView.stopLoadMore();
                    }


                    if (listBaseDataBean.getData() == null) {
                        return;
                    }
                    adapter.addAll(listBaseDataBean.getData());
                }


            }

            @Override
            public void onFail(int errorCode) {
                if (xRefreshView != null) {
                    xRefreshView.stopRefresh();
                    xRefreshView.setLoadComplete(false);
                }

            }
        });
    }


    private void delCase() {
        Map map = new HashMap();


        map.put("caseId", caseId + "");


        HttpMehtod.getInstance().delCase(map, new IdeaObserver<BaseDataBean>() {

            @Override
            public void onSuccess(BaseDataBean listBaseDataBean) {

                ToastUtil.show("删除成功");
                adapter.itemDatas.remove(position);
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onFail(int errorCode) {
            }
        });
    }


}
